<!--
This tests the overhead added by document rules to style recalc with display
locked elements. It adds 1,000 display-locked divs (with 4 links each), applies
and removes the lock, and forces a style update after. This test can be run with
and without "SpeculationRulesDocumentRulesSelectorMatches" enabled, and the
performance should be comparable.
-->
<!DOCTYPE html>
<head>
  <script src="../resources/runner.js"></script>
  <style>
    #root > * { content-visibility: visible; }
  </style>
  <script type="speculationrules">
    {"prefetch": [{"source": "document"}]}
  </script>
</head>
<body>
  <div id="root"></div>
</body>
<script>
  const NUM_BLOCKS = 1000;

  function setup() {
    let id = 0;
    root.innerHTML = "";
    document.styleSheets[0].rules[0].style.contentVisibility = 'visible';

    for (let i = 0; i < NUM_BLOCKS; i++) {
      const block = document.createElement("div");
      block.id = ++id;
      block.innerHTML = `
          <a href="/foo.com" id="${++id}">${id}</a>
          <a href="/foo.com" id="${++id}">${id}</a>
          <a href="/foo.com" id="${++id}">${id}</a>
          <a href="/foo.com" id="${++id}">${id}</a>
      `
      root.appendChild(block);
    }
    root.offsetLeft;
  }

  function runTest() {
    document.styleSheets[0].rules[0].style.contentVisibility = 'hidden';
    root.offsetTop;

    document.styleSheets[0].rules[0].style.contentVisibility = 'visible';
    root.offsetTop;
  }

  PerfTestRunner.measureTime({
    setup: setup,
    run: runTest,
    iterationCount: 10,
  });
</script>
